package com.wontube.smr.client;

import java.util.List;

import com.wontube.client.modle.vo.PagenateInfo;
import com.wontube.smr.client.model.po.Genre;
import com.wontube.smr.client.model.po.Movie;
import com.wontube.smr.client.model.vo.MovieItems;
import com.wontube.smr.client.model.vo.VideoFiles;


public interface IShortFilmHandler {
	//时间参数
	final String TIME_TODAY = "today";
	final String TIME_THIS_WEEK = "this_week";
	final String TIME_THIS_MONTH = "this_month";
	final String TIME_ALL = "all_time";
	
	/**
	 * all genre
	 * 
	 * @return
	 */
	List<Genre> selectAllGenres();
	
	/**
	 * 获取指定视频的真实地址信息， 目前只支持 youtube
	 * 
	 * @param url
	 * @return
	 */
	VideoFiles getAllVideos(String url);
	
	/**
	 * 获取youtube视频地址的真实地址列表
	 * 
	 * @param url
	 * @return
	 */
	VideoFiles getYouTubeVideos(String url);
	
	/**
	 * 相关视频
	 * 
	 * @param filmId
	 * @param pageInfo
	 * @return
	 */
	MovieItems listRelated(String filmId, PagenateInfo pageInfo);
	
	/**
	 * 根据  id 查询 ShortFilm
	 * 
	 * @param filmId
	 * @return
	 */
	Movie getShortFilm(String filmId); 
	
	/**
	 * 查询youtube 视频
	 * 
	 * @param query
	 * @param pageInfo
	 * @return
	 */
	MovieItems searchYouTube(String query, PagenateInfo pageInfo);
		
	/**
	 * @param feedId 参考类常量
	 * @param time 参考类常量
	 * @param pageInfo
	 * @return
	 */
	MovieItems listPopular(String time, PagenateInfo pageInfo);
	
	/**
	 * @param genreName
	 * @param pageInfo
	 * @return
	 */
	MovieItems listPopular(String genreName, String time, PagenateInfo pageInfo);
	
	/**
	 * recently added
	 * 
	 * @param time
	 * @param pageInfo
	 * @return
	 */
	MovieItems listRecent(PagenateInfo pageInfo);
	
	/**
	 * recently added
	 * 
	 * @param genreName
	 * @param time
	 * @param pageInfo
	 * @return
	 */
	MovieItems listRecent(String genreName, PagenateInfo pageInfo);
	
	/**
	 * @param feedId 参考类常量
	 * @param time 参考类常量
	 * @param pageInfo
	 * @return
	 */
	MovieItems listTopRated(String time, PagenateInfo pageInfo);
	
	/**
	 * @param feedId 参考类常量
	 * @param time 参考类常量
	 * @param genreName
	 * @param pageInfo
	 * @return
	 */
	MovieItems listTopRated(String time, String genreName, PagenateInfo pageInfo);
	
	/**
	 * 直接搜索video短片
	 * @param pageInfo
	 * @return
	 */
	MovieItems searchVideos(PagenateInfo pageInfo);
		
	/**
	 * 根据关键字搜索video短片	
	 * @param pageInfo
	 * @return
	 */
	MovieItems searchVideos(String query, PagenateInfo pageInfo);
	
	/**
	 * 根据关键字, 分类搜索video短片
	 * @param query 搜索关键字
	 * @param category 
	 * @param pageInfo
	 * @return
	 */
	MovieItems searchVideos(String query, String category, PagenateInfo pageInfo);
}
